/*!
 * @file gfxParticles.hh
 * @brief Obiekt do animowania efektów cząsteczkowych
 */

#ifndef __ENGINE_GFX_GFXPARTICLES_HH
#define __ENGINE_GFX_GFXPARTICLES_HH

#include <list>

#include "engine/basic/particle.hh"

class gfxParticles{
public:
	/*!
	 * @brief Konstruktor
	 * @return Obiekt
	 */
	gfxParticles();

	/*!
	 * @brief Dodaje cząstkę na listę cząstek celem ich animacji.
	 * @param p Cząstka do dodania
	 */
	void addParticle(particle *p);

	/*!
	 * @brief Usuwa cząstkę z listy.
	 * @param p Cząstka do usunięcia
	 */
	void removeParticle(particle *p);

	/*!
	 * @brief Obliczanie wszystkich cząsteczek i ich malowanie od nowa
	 */
	void draw();
	void calculate();

private:
	/*!
	 * @brief Lista cząstek
	 */
	std::list<particle*> particleStack;
};

#else
class gfxParticles;
#endif
